package net.blueleek.singleton;

/**
 * 急切实例化
 * 
 * <pre>
 * Pros:  简单;
 * Cons:  可能不必要的创建对象;
 * </pre>
 * 
 * @author lianxh
 * @date 2013-5-21 上午12:09:29
 */
public class EagerSingleton {

	private static EagerSingleton INSTANCE = new EagerSingleton();

	private EagerSingleton() {
		// do nothing
	}

	public static EagerSingleton getInstance() {
		return INSTANCE;
	}

	/**
	 * 如果EagerSingleton实现了Serializable接口,那么必须添加readResolve();
	 * 反序列化之后,本方法会被调用,然后该方法返回的对象引用将被返回,取代新建的对象. 所有的实例域都应该声明为transient的。
	 * --《Effective Java 第二版》 p15
	 */
	private Object readResolve() {
		return INSTANCE;
	}

	/**
	 * 实例提供的方法
	 */
	public void doSomething() {
		// do something
	}
}
